package br.com.mackinvest.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import br.com.mackinvest.business.Agencia;



public class MackInvestController extends MultiActionController {
	//TODO Criar metodo de verificacao da session, aplic�vel a todos os controllers!
	
	/**
	 * Verifica o login utilizado para acesso e se n�o foi realizado acesso direto a p�gina de request do login, caso o login esteja ok carrega a sessao do usuario
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ModelAndView login(HttpServletRequest request, HttpServletResponse response) throws Exception
	{
		if(request.getParameter("login") == null || request.getParameter("pass") == null || !request.getParameter("login").equals("demo") || !request.getParameter("pass").equals("demo")){
			return new ModelAndView("login","error","login e/ou senha inválidos!");
		}
		
		request.setAttribute("sessaoIniciada", true);		
		return new ModelAndView("dataSource");
	}
	
	/**
	 * Carrega os dados da aplicacao na memoria (dentro do Singleton Agencia), de acordo com o data-source selecionado pelo usuario
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ModelAndView loadAppData(HttpServletRequest request, HttpServletResponse response) throws Exception
	{			
		String tipoDados = request.getParameter("origem");
		Agencia agencia = Agencia.getInstanciaAgencia();
		agencia.setDefinicaoBancoDados(tipoDados);
		agencia.setDefinicaoEnderecoFisicoAplicacao( request.getContextPath()+"/arquivosTexto/" );
		agencia.carregarDados();
		
		return new ModelAndView("app", "tipoDados", tipoDados);
	}

	
	public ModelAndView finalizarPrograma(HttpServletRequest request, HttpServletResponse response) throws Exception
	{
		
		request.setAttribute("sessaoIniciada", false);		

		Agencia.getInstanciaAgencia().persistirTudo(); 
		
		return new ModelAndView("login", "error", "Aplicação finalizada!!");
	}
	
}
